package classic150;

/**
 * <h3>leetcode</h3>
 *
 * @author BigFaceCat
 * @date 2023/11/26 14:14
 * @description <p>leetcode121买卖股票的最佳时机-数组-简单题</p>
 */
public class No121 {
    public static void main(String[] args) {
        int[] prices = {7,1,4,3,6};
        System.out.println(maxProfit(prices));
    }

    /**
     *（1）第i天卖出，必然在[0, i-1]天内买入。
     *（2）从头开始遍历数组，得到价格最低点，开始比较之后的每天的利润值，看哪天的最大
     *（3）如果之后有一天的价格比最低点还低，那么重新计数，重复（2）
     * @param prices 数组
     * @return 最大利润
     */
    public static int maxProfit(int[] prices) {
        int maxProfits = -1;
        int tempMin = prices[0];

        for (int price : prices) {
            if (tempMin > price) {
                tempMin = price;
            } else if (price - tempMin > maxProfits) {
                maxProfits = price - tempMin;
            }
        }
        return maxProfits;
    }

}